"""
Fields module for PDEJulia.jl

Provides field data structures that live on grids and support mathematical operations.
Fields encapsulate both the numerical data and the spatial grid information.

# Field Types
- `ScalarField`: Real-valued scalar field on a grid
- `VectorField`: Vector-valued field on a grid  
- `Tensor2Field`: Rank-2 tensor field on a grid
- `FieldCollection`: Collection of multiple fields

# Features
- Mathematical operations (addition, multiplication, etc.)
- Differential operators (gradient, Laplacian, etc.)
- Interpolation and sampling
- Boundary condition handling
- Visualization support
- Integration and analysis tools
"""
module Fields

using LinearAlgebra
using StaticArrays
using Interpolations
using ..Grids

# Include all field implementations
include("base.jl")
include("scalar.jl")
include("vector.jl")
include("tensor.jl")
include("collection.jl")
include("operations.jl")

# Export types
export AbstractField, AbstractDataField
export ScalarField, VectorField, Tensor2Field, FieldCollection

# Export operations
export gradient, laplacian, divergence, curl
export integrate, norm, dot, cross
export interpolate, sample_at, extract_line
export apply_operator, apply_boundary_conditions!

# Export analysis functions
export get_extrema, get_statistics, find_peaks
export get_slice, get_profile

end # module Fields